package wrapper;
/**
 * 包装类的演示
 */
public class IntegerDemo {
    public static void main(String[] args) {
        //演示包装类的定义
      /*  Integer i1= new Integer(5);
        Integer i2 =new Integer(5);
        System.out.println(i1==i2);//false ==比较的是地址
        System.out.println(i1.equals(i2));//true,包装类重写了equals()
        // String类、包装类重写了equals()来比较内容是否相等，但StringBuilder并没有。

        //valueOf()方法会复用1个字节(-128到127)范围内的数据，建议使用valueOf()
        Integer i3 =Integer.valueOf(5);
        Integer i4 =Integer.valueOf(5);//直接复用s3 没有创建新对象
        System.out.println(i3==i4);//true
        System.out.println(i3.equals(i4));//true,包装类重写了equals()
        System.out.println("---------");
        Integer i5 =Integer.valueOf(500);
        Integer i6 =Integer.valueOf(500);//创建新对象
        System.out.println(i5==i6);//false
        *//*在 Java 中，使用Integer.valueOf()方法时，对于-128到127之间的整数，
        会复用缓存中的对象；而对于超出这个范围的整数，则会创建新的对象。
        因此，当你使用Integer.valueOf(500)时，会创建新的Integer对象。*/

        //演示基本类型与包装类型之间互转:
        /*Integer i =Integer.valueOf(5);//基本类型转换为包装类型
        int j =i.intValue();//包装类型转换为基本类型*/

        //触发了自动装箱特性，会被编译为Integer i = Integer.valueOf(5);
        Integer i =5;//基本类型到包装类-----装箱
        //触发了自动拆箱特性，会被编译为int j = i.intValue();b
        int j =i;//包装类到基本类型----拆箱

        /* 演示包装类的常用操作:
        1)可以通过包装类来获取基本类型的取值范围*/
        int max =Integer.MAX_VALUE;//MAX_VALUE是常量所以要类名.访问 获取int的最大值
        int min =Integer.MIN_VALUE;//获取int的最小值
        System.out.println("int的最大值为:"+max+",int的最小值为:"+min);
        long max1 =Long.MAX_VALUE;//获取long的最大值
        long min1 =Long.MIN_VALUE;//获取long的最小值
        System.out.println("long的最大值为:"+max1+",long的最小值为:"+min1);

        //2)包装类可以将字符串转换为对于的基本类型---必须熟练掌握
        String s1 ="40";
        //Integer有个静态方法叫parseInt
        int age =Integer.parseInt(s1);//将字符串s1转换为int类型并赋值给age
        System.out.println(age);//40---int类型

        String s2 ="123.456"; //转成double前提是一个合法的double eg:123.abc就不行
        double price =Double.parseDouble(s2);//将字符串s1转换为double类型并赋值给price
        System.out.println(price);//123.456---double类型

    }
}
